/*
 * Copyright 2023 OpenSPG Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 */

package com.antgroup.openspg.server.infra.dao.dataobject;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class LogicRuleDOExample {
  protected String orderByClause;

  protected boolean distinct;

  protected List<Criteria> oredCriteria;

  public LogicRuleDOExample() {
    oredCriteria = new ArrayList<Criteria>();
  }

  public void setOrderByClause(String orderByClause) {
    this.orderByClause = orderByClause;
  }

  public String getOrderByClause() {
    return orderByClause;
  }

  public void setDistinct(boolean distinct) {
    this.distinct = distinct;
  }

  public boolean isDistinct() {
    return distinct;
  }

  public List<Criteria> getOredCriteria() {
    return oredCriteria;
  }

  public void or(Criteria criteria) {
    oredCriteria.add(criteria);
  }

  public Criteria or() {
    Criteria criteria = createCriteriaInternal();
    oredCriteria.add(criteria);
    return criteria;
  }

  public Criteria createCriteria() {
    Criteria criteria = createCriteriaInternal();
    if (oredCriteria.size() == 0) {
      oredCriteria.add(criteria);
    }
    return criteria;
  }

  protected Criteria createCriteriaInternal() {
    Criteria criteria = new Criteria();
    return criteria;
  }

  public void clear() {
    oredCriteria.clear();
    orderByClause = null;
    distinct = false;
  }

  protected abstract static class GeneratedCriteria {
    protected List<Criterion> criteria;

    protected GeneratedCriteria() {
      super();
      criteria = new ArrayList<Criterion>();
    }

    public boolean isValid() {
      return criteria.size() > 0;
    }

    public List<Criterion> getAllCriteria() {
      return criteria;
    }

    public List<Criterion> getCriteria() {
      return criteria;
    }

    protected void addCriterion(String condition) {
      if (condition == null) {
        throw new RuntimeException("Value for condition cannot be null");
      }
      criteria.add(new Criterion(condition));
    }

    protected void addCriterion(String condition, Object value, String property) {
      if (value == null) {
        throw new RuntimeException("Value for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value));
    }

    protected void addCriterion(String condition, Object value1, Object value2, String property) {
      if (value1 == null || value2 == null) {
        throw new RuntimeException("Between values for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value1, value2));
    }

    public Criteria andIdIsNull() {
      addCriterion("id is null");
      return (Criteria) this;
    }

    public Criteria andIdIsNotNull() {
      addCriterion("id is not null");
      return (Criteria) this;
    }

    public Criteria andIdEqualTo(Long value) {
      addCriterion("id =", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotEqualTo(Long value) {
      addCriterion("id <>", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdGreaterThan(Long value) {
      addCriterion("id >", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdGreaterThanOrEqualTo(Long value) {
      addCriterion("id >=", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdLessThan(Long value) {
      addCriterion("id <", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdLessThanOrEqualTo(Long value) {
      addCriterion("id <=", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdIn(List<Long> values) {
      addCriterion("id in", values, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotIn(List<Long> values) {
      addCriterion("id not in", values, "id");
      return (Criteria) this;
    }

    public Criteria andIdBetween(Long value1, Long value2) {
      addCriterion("id between", value1, value2, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotBetween(Long value1, Long value2) {
      addCriterion("id not between", value1, value2, "id");
      return (Criteria) this;
    }

    public Criteria andGmtCreateIsNull() {
      addCriterion("gmt_create is null");
      return (Criteria) this;
    }

    public Criteria andGmtCreateIsNotNull() {
      addCriterion("gmt_create is not null");
      return (Criteria) this;
    }

    public Criteria andGmtCreateEqualTo(Date value) {
      addCriterion("gmt_create =", value, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateNotEqualTo(Date value) {
      addCriterion("gmt_create <>", value, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateGreaterThan(Date value) {
      addCriterion("gmt_create >", value, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateGreaterThanOrEqualTo(Date value) {
      addCriterion("gmt_create >=", value, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateLessThan(Date value) {
      addCriterion("gmt_create <", value, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateLessThanOrEqualTo(Date value) {
      addCriterion("gmt_create <=", value, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateIn(List<Date> values) {
      addCriterion("gmt_create in", values, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateNotIn(List<Date> values) {
      addCriterion("gmt_create not in", values, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateBetween(Date value1, Date value2) {
      addCriterion("gmt_create between", value1, value2, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtCreateNotBetween(Date value1, Date value2) {
      addCriterion("gmt_create not between", value1, value2, "gmtCreate");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedIsNull() {
      addCriterion("gmt_modified is null");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedIsNotNull() {
      addCriterion("gmt_modified is not null");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedEqualTo(Date value) {
      addCriterion("gmt_modified =", value, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedNotEqualTo(Date value) {
      addCriterion("gmt_modified <>", value, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedGreaterThan(Date value) {
      addCriterion("gmt_modified >", value, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedGreaterThanOrEqualTo(Date value) {
      addCriterion("gmt_modified >=", value, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedLessThan(Date value) {
      addCriterion("gmt_modified <", value, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedLessThanOrEqualTo(Date value) {
      addCriterion("gmt_modified <=", value, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedIn(List<Date> values) {
      addCriterion("gmt_modified in", values, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedNotIn(List<Date> values) {
      addCriterion("gmt_modified not in", values, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedBetween(Date value1, Date value2) {
      addCriterion("gmt_modified between", value1, value2, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andGmtModifiedNotBetween(Date value1, Date value2) {
      addCriterion("gmt_modified not between", value1, value2, "gmtModified");
      return (Criteria) this;
    }

    public Criteria andNameIsNull() {
      addCriterion("name is null");
      return (Criteria) this;
    }

    public Criteria andNameIsNotNull() {
      addCriterion("name is not null");
      return (Criteria) this;
    }

    public Criteria andNameEqualTo(String value) {
      addCriterion("name =", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameNotEqualTo(String value) {
      addCriterion("name <>", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameGreaterThan(String value) {
      addCriterion("name >", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameGreaterThanOrEqualTo(String value) {
      addCriterion("name >=", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameLessThan(String value) {
      addCriterion("name <", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameLessThanOrEqualTo(String value) {
      addCriterion("name <=", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameLike(String value) {
      addCriterion("name like", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameNotLike(String value) {
      addCriterion("name not like", value, "name");
      return (Criteria) this;
    }

    public Criteria andNameIn(List<String> values) {
      addCriterion("name in", values, "name");
      return (Criteria) this;
    }

    public Criteria andNameNotIn(List<String> values) {
      addCriterion("name not in", values, "name");
      return (Criteria) this;
    }

    public Criteria andNameBetween(String value1, String value2) {
      addCriterion("name between", value1, value2, "name");
      return (Criteria) this;
    }

    public Criteria andNameNotBetween(String value1, String value2) {
      addCriterion("name not between", value1, value2, "name");
      return (Criteria) this;
    }

    public Criteria andVersionIdIsNull() {
      addCriterion("version_id is null");
      return (Criteria) this;
    }

    public Criteria andVersionIdIsNotNull() {
      addCriterion("version_id is not null");
      return (Criteria) this;
    }

    public Criteria andVersionIdEqualTo(Integer value) {
      addCriterion("version_id =", value, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdNotEqualTo(Integer value) {
      addCriterion("version_id <>", value, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdGreaterThan(Integer value) {
      addCriterion("version_id >", value, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdGreaterThanOrEqualTo(Integer value) {
      addCriterion("version_id >=", value, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdLessThan(Integer value) {
      addCriterion("version_id <", value, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdLessThanOrEqualTo(Integer value) {
      addCriterion("version_id <=", value, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdIn(List<Integer> values) {
      addCriterion("version_id in", values, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdNotIn(List<Integer> values) {
      addCriterion("version_id not in", values, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdBetween(Integer value1, Integer value2) {
      addCriterion("version_id between", value1, value2, "versionId");
      return (Criteria) this;
    }

    public Criteria andVersionIdNotBetween(Integer value1, Integer value2) {
      addCriterion("version_id not between", value1, value2, "versionId");
      return (Criteria) this;
    }

    public Criteria andStatusIsNull() {
      addCriterion("status is null");
      return (Criteria) this;
    }

    public Criteria andStatusIsNotNull() {
      addCriterion("status is not null");
      return (Criteria) this;
    }

    public Criteria andStatusEqualTo(String value) {
      addCriterion("status =", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusNotEqualTo(String value) {
      addCriterion("status <>", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusGreaterThan(String value) {
      addCriterion("status >", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusGreaterThanOrEqualTo(String value) {
      addCriterion("status >=", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusLessThan(String value) {
      addCriterion("status <", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusLessThanOrEqualTo(String value) {
      addCriterion("status <=", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusLike(String value) {
      addCriterion("status like", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusNotLike(String value) {
      addCriterion("status not like", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusIn(List<String> values) {
      addCriterion("status in", values, "status");
      return (Criteria) this;
    }

    public Criteria andStatusNotIn(List<String> values) {
      addCriterion("status not in", values, "status");
      return (Criteria) this;
    }

    public Criteria andStatusBetween(String value1, String value2) {
      addCriterion("status between", value1, value2, "status");
      return (Criteria) this;
    }

    public Criteria andStatusNotBetween(String value1, String value2) {
      addCriterion("status not between", value1, value2, "status");
      return (Criteria) this;
    }

    public Criteria andUserNoIsNull() {
      addCriterion("user_no is null");
      return (Criteria) this;
    }

    public Criteria andUserNoIsNotNull() {
      addCriterion("user_no is not null");
      return (Criteria) this;
    }

    public Criteria andUserNoEqualTo(String value) {
      addCriterion("user_no =", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoNotEqualTo(String value) {
      addCriterion("user_no <>", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoGreaterThan(String value) {
      addCriterion("user_no >", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoGreaterThanOrEqualTo(String value) {
      addCriterion("user_no >=", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoLessThan(String value) {
      addCriterion("user_no <", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoLessThanOrEqualTo(String value) {
      addCriterion("user_no <=", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoLike(String value) {
      addCriterion("user_no like", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoNotLike(String value) {
      addCriterion("user_no not like", value, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoIn(List<String> values) {
      addCriterion("user_no in", values, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoNotIn(List<String> values) {
      addCriterion("user_no not in", values, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoBetween(String value1, String value2) {
      addCriterion("user_no between", value1, value2, "userNo");
      return (Criteria) this;
    }

    public Criteria andUserNoNotBetween(String value1, String value2) {
      addCriterion("user_no not between", value1, value2, "userNo");
      return (Criteria) this;
    }

    public Criteria andIsMasterIsNull() {
      addCriterion("is_master is null");
      return (Criteria) this;
    }

    public Criteria andIsMasterIsNotNull() {
      addCriterion("is_master is not null");
      return (Criteria) this;
    }

    public Criteria andIsMasterEqualTo(Byte value) {
      addCriterion("is_master =", value, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterNotEqualTo(Byte value) {
      addCriterion("is_master <>", value, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterGreaterThan(Byte value) {
      addCriterion("is_master >", value, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterGreaterThanOrEqualTo(Byte value) {
      addCriterion("is_master >=", value, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterLessThan(Byte value) {
      addCriterion("is_master <", value, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterLessThanOrEqualTo(Byte value) {
      addCriterion("is_master <=", value, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterIn(List<Byte> values) {
      addCriterion("is_master in", values, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterNotIn(List<Byte> values) {
      addCriterion("is_master not in", values, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterBetween(Byte value1, Byte value2) {
      addCriterion("is_master between", value1, value2, "isMaster");
      return (Criteria) this;
    }

    public Criteria andIsMasterNotBetween(Byte value1, Byte value2) {
      addCriterion("is_master not between", value1, value2, "isMaster");
      return (Criteria) this;
    }

    public Criteria andRuleIdIsNull() {
      addCriterion("rule_id is null");
      return (Criteria) this;
    }

    public Criteria andRuleIdIsNotNull() {
      addCriterion("rule_id is not null");
      return (Criteria) this;
    }

    public Criteria andRuleIdEqualTo(String value) {
      addCriterion("rule_id =", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdNotEqualTo(String value) {
      addCriterion("rule_id <>", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdGreaterThan(String value) {
      addCriterion("rule_id >", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdGreaterThanOrEqualTo(String value) {
      addCriterion("rule_id >=", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdLessThan(String value) {
      addCriterion("rule_id <", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdLessThanOrEqualTo(String value) {
      addCriterion("rule_id <=", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdLike(String value) {
      addCriterion("rule_id like", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdNotLike(String value) {
      addCriterion("rule_id not like", value, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdIn(List<String> values) {
      addCriterion("rule_id in", values, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdNotIn(List<String> values) {
      addCriterion("rule_id not in", values, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdBetween(String value1, String value2) {
      addCriterion("rule_id between", value1, value2, "ruleId");
      return (Criteria) this;
    }

    public Criteria andRuleIdNotBetween(String value1, String value2) {
      addCriterion("rule_id not between", value1, value2, "ruleId");
      return (Criteria) this;
    }

    public Criteria andEffectScopeIsNull() {
      addCriterion("effect_scope is null");
      return (Criteria) this;
    }

    public Criteria andEffectScopeIsNotNull() {
      addCriterion("effect_scope is not null");
      return (Criteria) this;
    }

    public Criteria andEffectScopeEqualTo(String value) {
      addCriterion("effect_scope =", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeNotEqualTo(String value) {
      addCriterion("effect_scope <>", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeGreaterThan(String value) {
      addCriterion("effect_scope >", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeGreaterThanOrEqualTo(String value) {
      addCriterion("effect_scope >=", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeLessThan(String value) {
      addCriterion("effect_scope <", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeLessThanOrEqualTo(String value) {
      addCriterion("effect_scope <=", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeLike(String value) {
      addCriterion("effect_scope like", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeNotLike(String value) {
      addCriterion("effect_scope not like", value, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeIn(List<String> values) {
      addCriterion("effect_scope in", values, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeNotIn(List<String> values) {
      addCriterion("effect_scope not in", values, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeBetween(String value1, String value2) {
      addCriterion("effect_scope between", value1, value2, "effectScope");
      return (Criteria) this;
    }

    public Criteria andEffectScopeNotBetween(String value1, String value2) {
      addCriterion("effect_scope not between", value1, value2, "effectScope");
      return (Criteria) this;
    }
  }

  public static class Criteria extends GeneratedCriteria {

    protected Criteria() {
      super();
    }
  }

  public static class Criterion {
    private String condition;

    private Object value;

    private Object secondValue;

    private boolean noValue;

    private boolean singleValue;

    private boolean betweenValue;

    private boolean listValue;

    private String typeHandler;

    public String getCondition() {
      return condition;
    }

    public Object getValue() {
      return value;
    }

    public Object getSecondValue() {
      return secondValue;
    }

    public boolean isNoValue() {
      return noValue;
    }

    public boolean isSingleValue() {
      return singleValue;
    }

    public boolean isBetweenValue() {
      return betweenValue;
    }

    public boolean isListValue() {
      return listValue;
    }

    public String getTypeHandler() {
      return typeHandler;
    }

    protected Criterion(String condition) {
      super();
      this.condition = condition;
      this.typeHandler = null;
      this.noValue = true;
    }

    protected Criterion(String condition, Object value, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.typeHandler = typeHandler;
      if (value instanceof List<?>) {
        this.listValue = true;
      } else {
        this.singleValue = true;
      }
    }

    protected Criterion(String condition, Object value) {
      this(condition, value, null);
    }

    protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.secondValue = secondValue;
      this.typeHandler = typeHandler;
      this.betweenValue = true;
    }

    protected Criterion(String condition, Object value, Object secondValue) {
      this(condition, value, secondValue, null);
    }
  }
}
